import { fileURLToPath, URL } from 'node:url'

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'
// import UnoCSS from 'unocss/vite'
import tailwindcss from '@tailwindcss/vite'

// https://vite.dev/config/
export default defineConfig(({ command, mode }) => {
  // 获取当前模式下的环境配置（process.env.NODE_ENV 满足不了需求）
  const env = loadEnv(mode, './');

  return {
    plugins: [
      vue(),
      vueDevTools(),
      // UnoCSS(),
      tailwindcss(),
    ],
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      },
    },

    // 开发服务器选项
    server: {
      host: '0.0.0.0', // 如果将此设置为 0.0.0.0 或者 true 将监听所有地址，包括局域网和公网地址。
      // host: env.VITE_SERVER_HOST || '0.0.0.0', // 如果将此设置为 0.0.0.0 或者 true 将监听所有地址，包括局域网和公网地址。
      // port: env.VITE_SERVER_PORT || '5173', // 默认值： 5173。如果端口已经被使用，Vite 会自动尝试下一个可用的端口。
      // open: false // 启动时是否自动在浏览器中打开应用程序。
    },

    // 开发或生产环境服务的公共基础路径。默认： /
    base: env.VITE_BASE ?? './',
    
    // 拆分大文件
    build: {
      outDir: env.VITE_OUT_DIR ?? 'dist',
      chunkSizeWarningLimit: 1500,
      rollupOptions: {
        output: {
          manualChunks(id) {
            if (id.includes('node_modules')) {
              return id.toString().split('node_modules/')[1].split('/')[0].toString();
            }
          }
        }
      }
    }
  }
})